/*
 * GameObject.h
 *
 *  Created on: Dec 12, 2012
 *      Author: kroell
 */

#ifndef GAMEOBJECT_H_
#define GAMEOBJECT_H_

#include <string>
#include <iostream>

//define terminal colors
//#define RESET   "\033[0m"
//#define BLACK   "\033[30m"      /* Black */
//#define RED     "\033[31m"      /* Red */
//#define GREEN   "\033[32m"      /* Green */
//#define YELLOW  "\033[33m"      /* Yellow */
//#define BLUE    "\033[34m"      /* Blue */
//#define MAGENTA "\033[35m"      /* Magenta */
//#define CYAN    "\033[36m"      /* Cyan */
//#define WHITE   "\033[37m"      /* White */
//#define BOLDBLACK   "\033[1m\033[30m"      /* Bold Black */
//#define BOLDRED     "\033[1m\033[31m"      /* Bold Red */
//#define BOLDGREEN   "\033[1m\033[32m"      /* Bold Green */
//#define BOLDYELLOW  "\033[1m\033[33m"      /* Bold Yellow */
//#define BOLDBLUE    "\033[1m\033[34m"      /* Bold Blue */
//#define BOLDMAGENTA "\033[1m\033[35m"      /* Bold Magenta */
//#define BOLDCYAN    "\033[1m\033[36m"      /* Bold Cyan */
//#define BOLDWHITE   "\033[1m\033[37m"      /* Bold White */


//colors enum
enum Color {RESET, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE};

class GameObject {

	friend std::ostream& operator<<(std::ostream& output, const GameObject& go);

protected:
	//both enemies and towers have speed and power
	int speed;
	int power;

	//both have letter representation
	char represent;

	//color
	//Color color;

public:

	Color color;

	GameObject();
	GameObject(int, int);
	virtual ~GameObject();

	//getters
	int getSpeed();
	int getPower();
	char getRep();

	//setters
	void setSpeed(int);
	void setPower(int);

	//std::string translateColor(enum Color);

private:

};

#endif /* GAMEOBJECT_H_ */
